/*
 * Copyright (c) 2012-2020 MIRACL UK Ltd.
 *
 * This file is part of MIRACL Core
 * (see https://github.com/miracl/core).
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/* Fixed Data in ROM - Field and Curve parameters */


package org.miracl.core.BLS48581;

public class ROM
{

// Base Bits= 29
public static final int[] Modulus= {0x565912B,0x16E0AA73,0x12922B0F,0x1FBEE434,0xEE0A578,0x12A898B8,0xBDA0D9E,0x9E8E6DB,0x19CD3039,0x17041566,0x2B90EBD,0xEA88949,0xC0F1F39,0x18DD9DF3,0x1E344884,0xADD09,0x1D47012A,0x9C12718,0x1CD1DBCC,0x501EE7F,0x1};
public static final int[] ROI= {0x565912A,0x16E0AA73,0x12922B0F,0x1FBEE434,0xEE0A578,0x12A898B8,0xBDA0D9E,0x9E8E6DB,0x19CD3039,0x17041566,0x2B90EBD,0xEA88949,0xC0F1F39,0x18DD9DF3,0x1E344884,0xADD09,0x1D47012A,0x9C12718,0x1CD1DBCC,0x501EE7F,0x1};
public static final int[] R2modp= {0x19BCC5B0,0x126A343E,0xA46F6C0,0x29B7799,0xB758510,0x1357043D,0x1DC2D482,0x115A8C75,0x1F6CA5F6,0x9B40365,0x16E1C7DB,0x1A304684,0xA85F60F,0x16E21141,0x1D5AE21,0xD9EA745,0x1641FB69,0x249C4AC,0xA2B23E1,0x14FCE472,0x0};
public static final int MConst= 0x39D5A7D;
public static final int[] SQRTm3= {0x1D65A0A,0x8F6FE15,0xB6336FD,0xC5B5452,0x69D616D,0x8923C1,0x1E2B5C49,0x4BA7957,0x13E4CD6C,0x14D8B5AE,0x583BB23,0x14076E71,0x14343F50,0x121BB7F6,0xB818699,0x11F7124B,0x1EAABFFD,0x4635146,0x69D8024,0x501EE7F,0x1};
public static final int[] Fra= {0x42AEB25,0x1175B67F,0x182B4FE5,0x1683284E,0x115ECE4D,0x1EF92B83,0x22B03E9,0x6EF6A24,0x8C41890,0x4249F0E,0x61F9A1,0xC60FC53,0x16B62F49,0x71E57E,0xF9E161D,0xFA08F30,0x1E55F606,0x1AE6BF39,0x140527E9,0x1FA61B6,0x0};
public static final int[] Frb= {0x42AEB25,0x1175B67F,0x182B4FE5,0x1683284E,0x115ECE4D,0x1EF92B83,0x22B03E9,0x6EF6A24,0x8C41890,0x4249F0E,0x61F9A1,0xC60FC53,0x16B62F49,0x71E57E,0xF9E161D,0xFA08F30,0x1E55F606,0x1AE6BF39,0x140527E9,0x1FA61B6,0x0};
public static final int[] TWK= {0x1F426953,0x1DA19E92,0xEE618F5,0x159C8B24,0xD37E160,0x145DEFD1,0xD2F0630,0x1FF9915F,0x2C4F62,0xDA1C978,0x51E0598,0x4FD2A34,0x132462ED,0x13341DC2,0x81D59C2,0x19374271,0x1D9EAEB8,0x1ABB4E6E,0xDEF0401,0x74CB4A,0x0};

//*** rom curve parameters *****
// Base Bits= 29
// Ate Bits= 33
// G2 Table size= 36

public static final int CURVE_Cof_I= 0;
public static final int[] CURVE_Cof= {0x382,0xA,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0};
public static final int CURVE_B_I= 1;
public static final int[] CURVE_B= {0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0};
public static final int[] CURVE_Order= {0xD671C01,0x52FF37E,0x10936846,0x1CB328CF,0x103C4CCB,0x1E682B11,0x5AA171,0x6989924,0x741969D,0xB961737,0xFEB5AF2,0x16797C00,0x1387A3F0,0x6B631A,0x13305857,0xBC46753,0x925E288,0x11C37C5,0x0,0x0,0x0};
public static final int[] CURVE_Gx= {0x115AF640,0x1E743991,0x79B630E,0x9B4BA74,0x11786CB7,0x1ED9B458,0x1BAF6F15,0xBB0B246,0x4584766,0x14EFB7CB,0x1154151A,0x1F73EEA8,0xBDBAEDF,0x3467B0D,0x15F83A1A,0xC1BC7E4,0x1F1E93F8,0x1D795B9E,0xB0D03CA,0x55EB36F,0x0};
public static final int[] CURVE_Gy= {0x2587A70,0xDDAEF1F,0x49AD5DB,0x6F5DEF7,0x11B2E35F,0x1BE143B6,0x8BD21FD,0xB0987DE,0x1E80F678,0x1CC57729,0xEDEFBFE,0x16E41DEF,0x1279DD41,0x52974C8,0xF27BFAE,0x149114AA,0xD1FB398,0xFC359D1,0x1D94C7E4,0x19DFB489,0x0};
public static final int[] CURVE_HTPC= {0x31193EC,0x1C9F85F0,0x1D6090C,0x5112C88,0x10D4620C,0x1F255473,0x1F5583B6,0x4F7AABD,0xCD0706B,0x14B125F7,0xECD8492,0x4D5AF8A,0xC755E26,0x2D4C018,0xB0B7761,0x1369CD4C,0x1FD42938,0x782EC54,0x17716BE5,0x1246919A,0x0};

public static final int[] CURVE_Bnx= {0x381,0xA,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0};
public static final int[] CRu= {0x1C79B90,0x6F4D62F,0x3977A09,0x19B1C7F1,0x1421A205,0x190FBA7B,0x16D758AA,0x129736C1,0x2F43166,0x115AFDC,0x1E9AA9CD,0xD508D6B,0xBED6FF4,0x1360F2FE,0x95960F5,0x709E55F,0x1F4E2096,0x2AEEAE8,0xB1A2DD4,0x0,0x0};
public static final int[] CURVE_Pxaaa= {0xCE8BFAB,0x1A7E85A5,0x85537B0,0xF2ECC64,0x1510317B,0x6C0248F,0x140C01,0x140C25E8,0x281A63C,0x168D4621,0x1BFDE6EA,0x1DE2AD88,0x64DB3A2,0xDE65BEF,0x1F1C0D13,0x1BD7577D,0x45A2775,0x11C11BFD,0x9E1C792,0xBAC2BB3,0x0};
public static final int[] CURVE_Pxaab= {0x16B47C57,0x134D9B33,0x1E850FC5,0xAAD4035,0x30FFD75,0x1186CBCB,0x13C30F1D,0x1FF4C4A0,0x214A76A,0x15FF6F8B,0xE50E802,0xFE9C38,0xF6DA123,0x111F4A93,0x1B660385,0x1D164576,0x86ABC07,0x9034D87,0x13889614,0xF892E7D,0x0};
public static final int[] CURVE_Pxaba= {0x55A3E6A,0x440AB65,0xCFC2D19,0x1E99BDAD,0x1D5FEA8E,0x1EFDDC3C,0x157C0A32,0x1E1A54DA,0xFFAE766,0xDE8C921,0x18058707,0x156B56D0,0x16957CCB,0x1BE53D36,0x1B2A6B88,0x178E7514,0x1853AD83,0x70D9750,0x663C4CD,0x3F998E0,0x0};
public static final int[] CURVE_Pxabb= {0x1B7FEAFE,0xD3819E5,0x2F0FC2,0x171969D,0xCA5231,0x292BE10,0x51A30C7,0x16364F37,0xE6EC143,0x11F0E3BB,0x862A57D,0x1F17C198,0x1B92A393,0x1F2C10DB,0x16B18BC,0x17FD1EB3,0x12954D4,0x2E3C6C0,0x973AD86,0x17C44318,0x0};
public static final int[] CURVE_Pxbaa= {0x13F8CCE5,0x1CE1D0E2,0x7532EDC,0x16BEE8D9,0x1AA80C65,0xAFE0C44,0x49D3EB5,0x9255CB1,0xC10B2EF,0x40CCEAD,0x6607E79,0xA70CD3,0x1F0E7C58,0x15AB3AF,0x1D742C59,0xC600F8C,0x4CAA9DD,0x1D1E2CC7,0x2CD644,0x717238C,0x0};
public static final int[] CURVE_Pxbab= {0xA3C093A,0x10026C8A,0x138CDC3C,0x12C1221F,0xF097FC7,0xF8BBB09,0x175D656A,0x1738162B,0x1EB57B40,0x1AE944CB,0x77D8E0,0x6E8303,0x58677BB,0xBBD1E8D,0xD773BC2,0x111EF71E,0x1E4ECDA0,0x101F8988,0x1FAC1CE1,0x192D8EF2,0x0};
public static final int[] CURVE_Pxbba= {0x750E057,0xB03F30,0x170CD539,0x16B61C40,0x2D63334,0x1F219261,0xCAAB472,0xBDF9E68,0x10FD0CAA,0x9D89E76,0x13BC47CA,0x16F4893,0x1908BA2C,0x1C295B6D,0x106CE744,0x1CCC1BD4,0x98908AE,0x1F80CBD2,0x118187B8,0x1736F2A3,0x0};
public static final int[] CURVE_Pxbbb= {0x1BC6AE34,0x10CED007,0x5F0FE13,0x15E5F93D,0x1FC44E56,0x1EB575FC,0x116151E6,0x16FC561A,0x164A7190,0x1F94E7F9,0x1E33F2A4,0xE514FF3,0xF741719,0x3DA908E,0xA77BEBD,0x563CBAF,0xC4F4AAA,0x2941312,0xBECAF7B,0x104FAB84,0x0};
public static final int[] CURVE_Pyaaa= {0xD2D7971,0x1F6E9FF2,0xB03FCC8,0xA025562,0x6D65904,0x15FBBF75,0x18F05666,0xDB15CA2,0xD90F733,0x17D13BA4,0x24188D6,0x86BF556,0x1B39EBFC,0x12BBF379,0x108E0166,0x4972316,0x16452F30,0xFD24B90,0x1B0DD6D7,0x1D6A66A,0x0};
public static final int[] CURVE_Pyaab= {0x16CD5665,0xA38EDC9,0x1FF1EC44,0x16846A4B,0xE2E588,0x1D04BEBB,0x1877484B,0x11255649,0x12C5C3D1,0x121D8F8C,0xBEC25AC,0x65F97E7,0x1D729647,0xF37DD00,0x108AE8C9,0x1B856EB4,0x11815FCA,0xA26D329,0x5E783FC,0x509B8EB,0x0};
public static final int[] CURVE_Pyaba= {0xA2A8474,0x1995293,0xEE3F79A,0x18F88DF8,0x52269CB,0x9AEA8D3,0x178BC307,0x194652BC,0x11515536,0xE874820,0x17DF5726,0xE0A288E,0x13A480D3,0x16AD88CE,0x1140C085,0x13DE585F,0x17036766,0x1F210F7D,0x17402148,0x166D4403,0x0};
public static final int[] CURVE_Pyabb= {0x841589D,0x1109ED49,0x194CDCC5,0x7B17143,0x5E578FB,0x1ED281F7,0xE84359E,0xEE84EE1,0xDCED281,0x199FD20,0xB226C89,0x245A4E8,0xB0E710E,0x7711EEC,0x1B4CD837,0x563859B,0x1BD47876,0x144111FD,0x1887B701,0x15D84B48,0x0};
public static final int[] CURVE_Pybaa= {0x2E50137,0x3C18FCC,0x13DE90FD,0xAFFBBBF,0x1137B088,0x9ACA2E,0x13D67D0C,0x9CA256C,0x8A1E2CA,0x111C66E7,0x16171DFE,0x2530AFD,0x159805F1,0xEC9DAD4,0x11506D0F,0xB44AA9B,0x1A5A8832,0x148B281F,0x88EA711,0x1A413AB4,0x0};
public static final int[] CURVE_Pybab= {0xF90BEE4,0x776E2C6,0x1B3CE965,0xB3DB044,0x12B679DA,0xCC6553,0xE78EABF,0xF8301A2,0x1F6824F4,0x6138420,0xA0D083A,0x156EA09F,0x182E2055,0x1915AC4E,0x159BAC59,0x17208435,0x1D5AD537,0x1289E99C,0x115CDADE,0xFA1A06E,0x0};
public static final int[] CURVE_Pybba= {0x1EB23986,0xA0FD757,0x6A98ACF,0x110802FB,0x13DCCC9E,0x7D31CFA,0x62D6ED0,0x118E964C,0x122C1FAB,0x11D14327,0x63D096B,0x10334DBF,0x15F14E4C,0xD8320A,0xD93F021,0x1F1400DE,0x1DFDD17A,0x112E1682,0x46F997A,0x112CECF0,0x0};
public static final int[] CURVE_Pybbb= {0x132718B6,0x133FFE5B,0x1A71575,0x158CDD08,0x13F748E5,0x6C62559,0x1505CC0,0x7D8E324,0x1E1AD033,0x14E18F4B,0xCE8FE39,0x1D95352A,0x149B6EF8,0x728643A,0x1C501AFA,0x36BC0D1,0x7E84F98,0x9C9D2E0,0x1FE240A7,0x6BC4A49,0x0};
//public static final int[][] CURVE_W= {{0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0},{0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}};
//public static final int[][][] CURVE_SB= {{{0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0},{0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}},{{0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0},{0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}}};
//public static final int[][] CURVE_WB= {{0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0},{0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0},{0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0},{0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}};
//public static final int[][][] CURVE_BB= {{{0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0},{0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0},{0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0},{0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}},{{0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0},{0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0},{0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0},{0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}},{{0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0},{0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0},{0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0},{0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}},{{0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0},{0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0},{0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0},{0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}}};

}

